package com.huawei.zyb.taskManager.infrastructure.persistence.mapper;

import com.huawei.zyb.taskManager.infrastructure.persistence.po.ProjectPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 项目数据访问映射器
 */
@Mapper
public interface ProjectMapper {
    
    /**
     * 插入项目
     */
    int insert(ProjectPO projectPO);
    
    /**
     * 更新项目
     */
    int update(ProjectPO projectPO);
    
    /**
     * 根据ID查找项目
     */
    ProjectPO findById(@Param("id") Long id);
    
    /**
     * 根据项目经理ID查找项目列表
     */
    List<ProjectPO> findByManagerId(@Param("managerId") String managerId);
    
    /**
     * 根据状态查找项目列表
     */
    List<ProjectPO> findByStatus(@Param("status") String status);
    
    /**
     * 查找所有项目
     */
    List<ProjectPO> findAll();
    
    /**
     * 根据名称模糊查找项目
     */
    List<ProjectPO> findByNameLike(@Param("name") String name);
    

    
    /**
     * 根据ID删除项目
     */
    int deleteById(@Param("id") Long id);
    
    /**
     * 检查项目是否存在
     */
    boolean existsById(@Param("id") Long id);
    
    /**
     * 检查项目下是否有未完成的需求
     */
    boolean hasIncompleteRequirements(@Param("projectId") Long projectId);
    

    
    /**
     * 统计项目数量
     */
    int countByStatus(@Param("status") String status);
    
    /**
     * 统计项目经理的项目数量
     */
    int countByManagerId(@Param("managerId") String managerId);
}